package com.xiaolin.lang;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

/**
 * @ClassName TestComparable
 * @Description TODO
 * @Detail 实现Comparable接口，重写compareTo方法
 *              步骤：
 *                  1、编写一个类去实现Comparable接口
 *                  2、重写compareTo方法，指定排序的字段和规则
 *              总结：
 *                  重写了compareTo方法之后，可以实现Collections工具类的sort方法来对对象进行排序
 * @Author MyPC
 * @Date 2020/9/26
 * @Version 1.0
 */
public class TestComparable {
    public static void main(String[] args) {
        Person p1=new Person();
        Person p2=new Person();
        p1.setAge(17);
        p1.setName("小林");
        p2.setAge(15);
        p2.setName("小红");
        System.out.println(p1.compareTo(p2) == 0 ? "一样大" : (p1.compareTo(p2) > 0 ? "p1大" : "p2大"));
        Person p3 =new Person();
        Person p4=new Person();
        p3.setAge(11);
        p3.setName("小兰");
        p4.setAge(16);
        p4.setName("小北");
        List<Person> list=new ArrayList<>();
        list.add(p1);
        list.add(p2);
        list.add(p3);
        list.add(p4);
        //按从小到大排序
        Collections.sort(list);
        System.out.println(list);
    }
}

class Person implements Comparable<Person>{
    int age;
    String name;
    @Override
    public int compareTo(Person o) {
        //等于0则一样大，大于0则比较方大，小于0则被比较方大
        return this.age -o.getAge();
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
        return name+"==="+age;
    }
}
